package com.cskaoyan.javase.oop2._1extends._1relation;

/**
 * 继承中的父子类,从属关系上来说,它们的关系是什么样的?
 * 从属关系（relation）上来说，继承中的父子类具有 "is-a" 关系。
 * 即子类 "is-a" 父类。
 * 子类可以近似地看成"是一个"父类，子类可以当作父类来使用。
 *
 * 如何理解上述关系呢?
 * 从以下角度理解:
 * 1.代码角度
 * 代码中,可以写出父类引用指向子类对象的代码
 * 这说明子类对象可以当成一个父类类型去使用
 * 这就是子类"is-a"父类
 *
 * 2.定义的角度
 * 数据类型 = 数据 + 操作
 * 定义类 = 定义数据类型 + 操作
 * 数据 = 成员变量的集合, 操作 = 成员方法的集合
 * 子类通过继承,得到了父类成员
 * 从数据类型的定义上来说,子类覆盖了父类
 * 这就是子类"is-a"父类
 *
 * 3.最直观的角度
 * 学生是人
 * 老师是人
 * 猫是动物
 * 狗也是动物
 * 子类is-a父类
 *
 * 总之,子类是可以当成父类来使用的,子类就是一个父类.
 *
 * 以上关系,反过来是不成立的,父类和子类没有直接关系
 *
 * @since 14:58
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 创建Son的对象有几种形式?
        Son s = new Son();
        // 父类引用指向子类对象
        Father fs = new Son();
    }
}

class Father {
}

class Son extends Father {
}